package Program.RegisterUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;

public class AdminRegisterUI extends JFrame {
    //顶端容器
    private JPanel northPanel;
    //中间容器
    private JPanel centerPanel;
    //底部容器
    private JPanel southPanel;
    //账号输入框
    private JTextField userNameField;
    //密码输入框
    private JPasswordField passwordField;
    //姓名输入框
    private JTextField nameField;
    //滚动条
    private JScrollPane jScrollPane;
    //性别复选框
    private JComboBox<String> sexBox;
    //住址信息输入框
    private JTextArea addressJTextArea;
    //密钥输入框
    private JTextField keyField;
    //最小化按钮
    private JButton minimizeButton;
    //关闭按钮
    private JButton closeButton;
    //注册按钮
    private JButton registerButton;
    //返回按钮
    private JButton backButton;
    //注册面的监听器
    private AdminRegisterListener registerListener;

    public AdminRegisterUI() throws HeadlessException {
        //界面初始化
        initJFrame();
        //让界面显示出来，建议写在最后
        this.setVisible(true);
    }

    //主界面
    private void initJFrame() {
        //设置窗口标题图标
        this.setIconImage(new ImageIcon("JFrame_images\\物业管理.png").getImage());
        //设置窗口没又修饰框
        this.setUndecorated(true);
        //设置窗口的大小
        this.setSize(600, 600);
        //设置窗口禁止用户调整
        this.setResizable(false);
        //设置窗口居中
        this.setLocationRelativeTo(null);
        //设置窗口设置边框布局
        this.setLayout(new BorderLayout());
        //设置窗口背景颜色
        this.getContentPane().setBackground(new Color(190, 230, 240));
        //设置窗口关闭模式
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //添加容器
        this.add(this.initNorth(), BorderLayout.PAGE_START);
        this.add(this.initCenter(), BorderLayout.CENTER);
        this.add(this.initSouth(), BorderLayout.PAGE_END);

        // 实例化自定义监听器
        registerListener = new AdminRegisterListener(this, northPanel, userNameField, passwordField,
                nameField, sexBox, addressJTextArea, keyField, minimizeButton, closeButton, registerButton, backButton);

        registerButton.addActionListener(registerListener);
        minimizeButton.addActionListener(registerListener);
        closeButton.addActionListener(registerListener);
        backButton.addActionListener(registerListener);

        //设置默认按钮按键（按回车点击注册按钮）
        this.getRootPane().setDefaultButton(registerButton);
    }

    //界面顶端部分
    private JPanel initNorth() {
        //顶端容器赋值对象
        northPanel = new JPanel(null);
        //设置容器大小
        northPanel.setPreferredSize(new Dimension(600, 100));

        //最小化和关闭按钮赋值对象
        minimizeButton = new JButton();
        closeButton = new JButton();
        //设置按钮格式
        //设置位置
        minimizeButton.setBounds(488, 0, 54, 50);
        closeButton.setBounds(542, 0, 58, 50);
        //设置取消焦点
        minimizeButton.setFocusPainted(false);
        closeButton.setFocusPainted(false);
        //设置取消按钮框
        minimizeButton.setBorderPainted(false);
        closeButton.setBorderPainted(false);
        //设置鼠标样式（手的样式）
        minimizeButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        closeButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        //设置按钮背景为透明
        minimizeButton.setContentAreaFilled(false);
        closeButton.setContentAreaFilled(false);
        //设置按钮图标
        minimizeButton.setIcon(new ImageIcon("JFrame_images\\最小化1.png"));  //未选中时
        minimizeButton.setRolloverIcon(new ImageIcon("JFrame_images\\最小化2.png"));  //选中时
        minimizeButton.setPressedIcon(new ImageIcon("JFrame_images\\最小化3.png"));  //按下时
        closeButton.setIcon(new ImageIcon("JFrame_images\\关闭1.png"));  //未选中时
        closeButton.setRolloverIcon(new ImageIcon("JFrame_images\\关闭2.png"));  //选中时
        closeButton.setPressedIcon(new ImageIcon("JFrame_images\\关闭3.png"));   //按下时
        //设置背景
        JLabel bgImgJLabel = new JLabel(new ImageIcon("Register_images\\adminbg.png"), JLabel.CENTER);
        bgImgJLabel.setBounds(0, 0, 600, 100);
        //添加控件
        northPanel.add(minimizeButton);
        northPanel.add(closeButton);
        northPanel.add(bgImgJLabel);
        return northPanel;
    }

    //界面中间部分
    private JPanel initCenter() {
        //中间容器赋予对象
        centerPanel = new JPanel(null);
        //设置容器的大小
        centerPanel.setPreferredSize(new Dimension(600, 0));
        //设置背景颜色
        centerPanel.setBackground(new Color(190, 230, 240));
        //设置字体格式
        Font font = new Font("微软雅黑", Font.BOLD, 20);

        //设置账号标签
        JLabel userNameJLabel = new JLabel("账  号");
        //输入框赋予对象
        userNameField = new JTextField();
        //设置账号标签的位置和大小
        userNameJLabel.setBounds(165, 20, 80, 50);
        //设置输入框的位置和大小
        userNameField.setBounds(250, 30, 220, 30);
        //设置字体
        userNameJLabel.setFont(font);
        userNameField.setFont(font);
        //设置提示文字
        userNameField.setToolTipText("最大长度17,最小长度4");
        //添加控件
        centerPanel.add(userNameJLabel);
        centerPanel.add(userNameField);


        //设置密码标签
        JLabel passwordJLabel = new JLabel("密  码");
        //密码框赋予对象
        passwordField = new JPasswordField();
        //设置密码标签的位置和大小
        passwordJLabel.setBounds(165, 75, 80, 50);
        //设置密码输入框的位置和大小
        passwordField.setBounds(250, 85, 220, 30);
        //设置字体
        passwordJLabel.setFont(font);
        passwordField.setFont(font);
        //设置提示文字
        passwordField.setToolTipText("最大长度17,最小长度4");
        //添加控件
        centerPanel.add(passwordJLabel);
        centerPanel.add(passwordField);


        //设置姓名标签
        JLabel nameJLabel = new JLabel("姓  名");
        //姓名输入框赋予对象
        nameField = new JTextField();
        //设置姓名标签的位置和大小
        nameJLabel.setBounds(165, 135, 80, 50);
        //设置姓名输入框的位置和大小
        nameField.setBounds(250, 145, 220, 30);
        //设置字体
        nameJLabel.setFont(font);
        nameField.setFont(font);
        //设置文字提示
        nameField.setToolTipText("输入正确的中文姓名");
        //添加控件
        centerPanel.add(nameJLabel);
        centerPanel.add(nameField);


        //设置性别标签
        JLabel sexJLabel = new JLabel("性  别");
        //性别下拉框赋予对象
        sexBox = new JComboBox<>();
        //添加选项
        sexBox.addItem("男");
        sexBox.addItem("女");
        //设置性别标签的位置和大小
        sexJLabel.setBounds(165, 195, 80, 50);
        //设置下拉框的位置和大小
        sexBox.setBounds(250, 205, 220, 30);
        //设置字体
        sexJLabel.setFont(font);
        sexBox.setFont(font);
        //添加控件
        centerPanel.add(sexJLabel);
        centerPanel.add(sexBox);

        //设置住址信息标签
        JLabel addressJLabel = new JLabel("住址信息");
        //住址信息输入框赋予对象
        addressJTextArea = new JTextArea();
        //多行输入框设置自动换行
        addressJTextArea.setLineWrap(true);
        //多行输入框设置无边框
        addressJTextArea.setBorder(null);
        //滚动条赋予对象
        jScrollPane = new JScrollPane(addressJTextArea);
        //设置滚动条水平和垂直的格式
        jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        //设置住址标签的位置和大小
        addressJLabel.setBounds(160, 255, 80, 50);
        //设置滚动条的位置
        jScrollPane.setBounds(250, 265, 220, 100);
        //设置字体
        addressJLabel.setFont(font);
        addressJTextArea.setFont(font);
        //设置文字提示
        addressJTextArea.setToolTipText("XX省/区XX市/县XX镇xx村xx栋xx号");
        //添加控件
        centerPanel.add(addressJLabel);
        centerPanel.add(jScrollPane);

        //设置管理员密钥标签
        JLabel keyJLabel = new JLabel("密  钥");
        //管理员密钥输入框赋予对象
        keyField = new JTextField();
        //设置姓名标签的位置和大小
        keyJLabel.setBounds(165, 375, 80, 50);
        //设置姓名输入框的位置和大小
        keyField.setBounds(250, 385, 220, 30);
        //设置字体
        keyJLabel.setFont(font);
        keyField.setFont(font);
        //设置文字提示
        keyField.setToolTipText("输入正确的管理员密钥");
        //添加控件
        centerPanel.add(keyJLabel);
        centerPanel.add(keyField);

        return centerPanel;
    }

    //底部容器
    private JPanel initSouth() {
        //底部容器赋予对象
        southPanel = new JPanel(null);
        //设置容器的大小
        southPanel.setPreferredSize(new Dimension(600, 75));
        //设置容器的背景颜色
        southPanel.setBackground(new Color(190, 230, 240));
        //注册按钮赋予对象
        registerButton = new JButton();
        //放回按钮赋予对象
        backButton = new JButton();

        //设置注册按钮格式
        //设置注册按钮的位置和大小
        registerButton.setBounds(280, 5, 149, 64);
        //取消焦点框
        registerButton.setFocusPainted(false);
        //取消边框
        registerButton.setBorderPainted(false);
        //设置按钮背景为透明
        registerButton.setContentAreaFilled(false);
        //设置三种情况下的图标
        registerButton.setIcon(new ImageIcon("Register_images\\注册按钮1.png"));
        registerButton.setRolloverIcon(new ImageIcon("Register_images\\注册按钮2.png"));
        registerButton.setPressedIcon(new ImageIcon("Register_images\\注册按钮3.png"));
        //设置注册按钮的文字提示
        registerButton.setToolTipText("Enter可触发注册");
        //设置鼠标样式（手的样式）
        registerButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        //添加控件
        southPanel.add(registerButton);


        //设置返回按钮的格式
        //设置返回按钮的位置和大小
        backButton.setBounds(170, 10, 48, 48);
        //取消焦点框
        backButton.setFocusPainted(false);
        //取消边框
        backButton.setBorderPainted(false);
        //设置按钮背景为透明
        backButton.setContentAreaFilled(false);
        //设置三种情况下的图标
        backButton.setIcon(new ImageIcon("JFrame_images\\返回按钮1.png"));
        backButton.setRolloverIcon(new ImageIcon("JFrame_images\\返回按钮2.png"));
        backButton.setPressedIcon(new ImageIcon("JFrame_images\\返回按钮3.png"));
        //设置返回按钮按钮的文字提示
        backButton.setToolTipText("返回登录界面,快捷键Alt+b");
        //添加辅助键
        backButton.setMnemonic(KeyEvent.VK_B);
        //设置鼠标样式（手的样式）
        backButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        //添加控件
        southPanel.add(backButton);

        //返回底部容器
        return southPanel;
    }


}

